package com.example.demo.netty.基于Netty实现RPC框架.序列化;

import java.io.IOException;

/**
 * 市面上序列化协议很多，比如jdk自带的，Google的protobuf，kyro、Hessian等，
 * jdk 的序列化方法。（不推荐，不利于之后的跨语言调用）
 * json 可读性强，但是序列化速度慢，体积大。
 * protobuf，kyro，Hessian 等都是优秀的序列化框架，也可按需选择。
 * 其他方式其实都可以，这里为了方便起见，选用JSON作为序列化协议，使用fastjson作为JSON框架
 */
public interface Serializer {
    /**
     * java对象转换为二进制
     *
     * @param object
     * @return
     */
    byte[] serialize(Object object) throws IOException;

    /**
     * 二进制转换成java对象
     *
     * @param clazz
     * @param bytes
     * @param <T>
     * @return
     */
    <T> T deserialize(Class<T> clazz, byte[] bytes) throws IOException;
}
